package com.sp.fresh_produce.service;

import com.github.pagehelper.PageInfo;
import com.sp.fresh_produce.controller.dto.VO.CategoryVORequest;
import com.sp.fresh_produce.model.pojo.Category;

import java.util.List;

/**
 * 分类领域服务接口
 * <p>
 * 定义分类的增删查等核心能力，面向控制器提供稳定的领域 API。
 */
public interface CategoryService {
    /**
     * 新增商品分类
     *
     * @param category 分类实体（至少包含名称、层级等基本信息）
     * @return 插入的行数
     */
    int addCategory(Category category);

    /**
     * 删除商品分类
     *
     * @param id 分类主键 ID
     * @return 删除的行数
     */
    int deleteCategory(Integer id);

    /**
     * 分页获取商品分类列表（管理员）
     *
     * @param pageNum  页码（从 1 开始）
     * @param pageSize 每页数量
     * @return 分页对象，包含总数、页码、页大小与数据列表
     */
    PageInfo<Category> getCategoryList(Integer pageNum, Integer pageSize);

    /**
     * 获取前台展示用的分类树
     *
     * @return 树形分类列表（包含 children）
     */
    List<CategoryVORequest> getCategoryListForUser(Integer parentId);
}
